#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>


// int get_days_of_month(int y, int m) {
//     int d = 0;
//     switch (m) {
//         case 1:
//         case 3:
//         case 5:
//         case 7:
//         case 8:
//         case 10:
//         case 12:
//             d = 31;
//             break;
//         case 4:
//         case 6:
//         case 9:
//         case 11:
//             d = 30;
//             break;
//         case 2: {
//                 d = 28;
//                 if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
//                     d += 1;
//             }
//     }
//     return d;
// }


int get_days_of_month(int y, int m)
{
    int d = 0;
    int arr[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

    d = arr[m];
    if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0) && m == 2)
    {
        d += 1;
    }
    return d;
}

// int get_days_of_month(int y, int m)
// {
//    int d = 0;
//    int days[] = { 0, 31,28,31,30,31,30,31,31,30,31,30,31 };
//    d = days[m];
//    if (((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) && m == 2)
//        d += 1;
//    return d;
// }

int main() {
    int y = 0;
    int m = 0;
    while (scanf("%d %d", &y, &m) == 2)
    {
        int d = get_days_of_month(y, m);
        printf("%d\n", d);
    }
    return 0;
}